package persistencia;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;

import negocio.Factura;

public class FacturaDao {
	private static FacturaDao ins;
	
	public static FacturaDao getInstancia(){
		if(ins==null){
			ins=new FacturaDao();
		}
		return ins;
	}
	
	
	public void guardarFactura(Factura f){
		Connection con=DataSource.obtenerConexion();
		String query=null;
		try{
			query="insert into factura values(?,?,?,?)";
			PreparedStatement ps=con.prepareStatement(query);
			ps.setDate(1,(Date) f.getFecha());
			ps.setInt(2, f.getIdentificador());
			ps.setInt(3, f.getId_usuario());
			ps.setFloat(4, f.getTotal());
			
			ps.execute();
			
			DataSource.cerrarConexion();
		}catch(Exception e){
			System.out.println("no se guardo la factura"+ e.getMessage());
		}
	}
	
	public Vector<Factura> obtenerFacturas(){
		Vector<Factura> fac=new Vector<Factura>();
		Connection con=DataSource.obtenerConexion();
		Statement st=null;
		ResultSet rs=null;
		try{
			String query="select * from Factura";
			st=con.createStatement();
			rs=st.executeQuery(query);
			
			while(rs.next()){
				Factura f=new Factura();
				f.setFecha(rs.getDate("fecha"));
				f.setIdentificador(rs.getInt("numero"));
				f.setId_usuario(rs.getInt("usuario"));
				f.setTotal(rs.getFloat("total"));
				f.setItemsFactura(ItemFacturaDao.getInstancia().obtenerItemsPorFactura(rs.getInt("numero")));
				
				fac.add(f);
			}
			
			DataSource.cerrarConexion();
		}catch(Exception e){
			System.out.println("no se trajo la factura"+ e.getMessage());
		}
		return fac;
	}
	
	
}
